package com.ayf.payment.game.api.service;

import com.ayf.payment.game.api.dto.GameTemplateDTO;
import com.ayf.payment.game.api.dto.ParAndTemInfoDTO;
import com.ayf.payment.game.api.dto.TemplateDTO;
import com.ayf.payment.game.api.dto.criteria.TemplateCriteria;
import com.ayf.payment.game.api.dto.criteria.TemplateGameSelectCriteria;
import com.ayf.payment.game.api.dto.criteria.TemplatePageCriteria;
import com.ayf.payment.game.api.dto.criteria.TemplateSelectCriteria;
import com.ayf.payment.game.api.entity.Template;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

;

public interface TemplateService {

    /**
     * 查询出分页模板
     *
     * @param selectCriteria
     * @return
     */
    List<TemplateDTO> selectPageTemplate(TemplatePageCriteria selectCriteria);

    /**
     * 查询出所有模板
     *
     * @param selectCriteria
     * @return
     */
    List<TemplateDTO> selectAllTemplate(TemplateSelectCriteria selectCriteria);

    /**
     * 添加模板
     *
     * @param criteria
     * @return
     */
    @Transactional
    boolean insertTemplate(TemplateCriteria criteria);

    /**
     * 根据模板名称查询出模板
     *
     * @param name
     * @return
     */
    Template selectTemByTemName(String name, Integer merchantId);

    /**
     * 查询出模板详细信息
     *
     * @param id
     * @return
     */
    TemplateCriteria selectTemById(String id);

    /**
     * 更新模板详细信息
     *
     * @param updateCriteria
     * @return
     */
    @Transactional
    boolean updateTemInfo(TemplateCriteria updateCriteria);

    /**
     * 更改模板状态为禁用
     *
     * @param temCriteria
     * @return
     */
    @Transactional
    boolean updateTemStatusById(TemplateCriteria temCriteria);

    /**
     * 查询出游戏下面的模板
     *
     * @param tgc
     * @return
     */
    List<GameTemplateDTO> selectTemByGameId(TemplateGameSelectCriteria tgc);

    /**
     * 查询出分区详情
     *
     * @param partitionId
     * @return
     */
    ParAndTemInfoDTO selectParAndTemInfo(String partitionId);

    ParAndTemInfoDTO selectTemInfo(String partitionId);

}


